using System;
using System.Collections.Generic;
using System.Text;
using SDMX_Common = SDMX_ML.Framework.Common;

namespace SDMX_ML.Framework.Structure
{
    public class CrossSectionalMeasure
    {
        public CrossSectionalMeasure(SDMX_Common.IDType conceptRef, SDMX_Common.IDType code,
            SDMX_Common.IDType measureDimension)
        {
            if (conceptRef != null)
            {
                _conceptRef = conceptRef;
            }
            else
            {
                throw new Exception("Attribute ConceptRef is a required field");
            }

            if (code != null)
            {
                _code = code;
            }
            else
            {
                throw new Exception("Attribute code is a required field");
            }

            if (measureDimension != null)
            {
                _measureDimension = measureDimension;
            }
            else
            {
                throw new Exception("Attribute measureDimension is a required field");
            }

            _textFormat = new List<TextFormatType>();
            _annotation = new SDMX_Common.AnnotationsType();

        }
        private List<TextFormatType> _textFormat;

        public List<TextFormatType> TextFormat
        {
            get { return _textFormat; }
            set { _textFormat = value; }
        }

        private SDMX_Common.AnnotationsType _annotation;

        public SDMX_Common.AnnotationsType Annotations
        {
            get { return _annotation; }
            set { _annotation = value; }
        }

        private SDMX_Common.IDType _conceptRef;

        public SDMX_Common.IDType ConceptRef
        {
            get { return _conceptRef; }
            set { _conceptRef = value; }
        }
        private string _conceptversion;

        public string ConceptVersion
        {
            get { return _conceptversion; }
            set { _conceptversion = value; }
        }
        private SDMX_Common.IDType _conceptagency;

        public SDMX_Common.IDType ConceptAgency
        {
            get { return _conceptagency; }
            set { _conceptagency = value; }
        }
        private SDMX_Common.IDType _conceptschemaref;

        public SDMX_Common.IDType ConceptSchemaRef
        {
            get { return _conceptschemaref; }
            set { _conceptschemaref = value; }
        }
        private SDMX_Common.IDType _conceptschemaagency;

        public SDMX_Common.IDType ConceptSchemaAgency
        {
            get { return _conceptschemaagency; }
            set { _conceptschemaagency = value; }
        }
        private SDMX_Common.IDType _codelist;

        public SDMX_Common.IDType Codelist
        {
            get { return _codelist; }
            set { _codelist = value; }
        }
        private string _codelistversion;

        public string CodelistVersion
        {
            get { return _codelistversion; }
            set { _codelistversion = value; }
        }
        private SDMX_Common.IDType _codelistagency;

        public SDMX_Common.IDType CodelistAgency
        {
            get { return _codelistagency; }
            set { _codelistagency = value; }
        }

        private SDMX_Common.IDType _measureDimension;

        public SDMX_Common.IDType MeasureDimension
        {
            get { return _measureDimension; }
            set { _measureDimension = value; }
        }

        private SDMX_Common.IDType _code;

        public SDMX_Common.IDType Code
        {
            get { return _code; }
            set { _code = value; }
        }



    }
}
